package com.example.user_manage.mapper;

import com.example.user_manage.entity.User;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface UserMapper {

   List<User> selectAll();

    /**
     * 通过登录账号查用户
     * @param loginAct 登录账号
     * @return User用户对象
     */
    User selectUserByLoginAct(String loginAct);

    /**
     * 查询用户，通过邮箱
     * @param email 邮箱
     * @return 用户对象
     */
    User selectUserByEmail(String email);

    List<User> selectUsersByRoleId(Long roleId);

    /**
     * 排除该id用户，进行查询，通过登录账号。
     * @param loginAct 登录账号
     * @param id 用户id
     * @return 用户对象
     */
    User excludeIdSelectUserByLoginAct(Long id,String loginAct);

    /**
     * 排除该id用户，进行查询，通过邮箱
     * @param email 邮箱
     * @param id 用户id
     * @return 用户对象
     */
    User excludeIdSelectUserByEmail(Long id,String email);

//  -----------------------逆向生成的方法-----------------------------

    /**
     * 删除用户，通过用户id
     * @param id 用户id
     * @return 删除的数据条数
     */
    int deleteByPrimaryKey(Long id);

    /**
     * 插入用户数据
     * @param record 用户数据对象
     * @return 插入的数据条数
     */
    int insert(User record);

    /**
     * 插入用户数据（不包括null字段）
     * @param record 用户数据记录
     * @return 插入的数据条数
     */
    int insertSelective(User record);

    /**
     * 用户查询，通过用户id
     * @param id 用户id
     * @return 用户对象
     */
    User selectByPrimaryKey(Long id);

    /**
     * 根据用户id更新用户数据（只更新非空字段）
     * @param record 用户数据记录
     * @return 修改的记录条数
     */
    int updateByPrimaryKeySelective(User record);

    /**
     * 通过用户id更新用户数据（所有数据全部更新到数据库，
     * 包括null字段）
     * @param record 用户数据记录
     * @return 更新的记录条数
     */
    int updateByPrimaryKey(User record);
}